←
▼
▲
Sub StringReplaceSetClass::Replace( FromText as string, ToText as string )
テキストを置き換えることを登録します。
【引数】
FromText
ToText
置き換える前のテキスト
置き換えた後のテキスト
参考
←
▼
▲
Sub StringReplaceSetClass::ReplaceRange( StartOfFromText as string, EndOfFromText as string,
ToText as string )
指定のタグで囲まれたテキストを置き換えることを登録します。
【引数】
StartOfFromText
EndOfFromText
置き換える前のテキストが始まる場所にあるタグ(テキスト)
置き換える前のテキストが終わる場所にあるタグ(テキスト)
置き換えた後のテキスト。 通常、タグも含む。
ToText
参考
←
▼
▲
Function StringReplaceSetClass::DoReplace( InputText as string ) as string
登録しておいた処理を実行します。
【引数】
InputText
返り値
置き換える前のテキスト
置き換えた後のテキスト
←
▼
▲
Set re = new_RegExp( "Function\(.*\)", True )
Function new_RegExp( Pattern as string, IsCaseSensitive as boolean ) as RegExp
オブジェクトを簡易的に生成します。
【引数】
Pattern
IsCaseSensitive
正規表現
大文字小文字を区別するかどうか
返り値
正規表現オブジェクト
サンプル
→ 正規表現
ソース
→ vbslib.vbs
new Regular Expression
←
▼
▲
Assert FindStringLines( "abc"+ vbCRLF +"def", "ab", Empty ) = "abc"+ vbCRLF
Function FindStringLines( in_BeforeString as string, in_RegularExpression as string or RegExp,
in_Option as Empty )
複数行の文字列を、正規表現でマッチする行だけにします。
【引数】
in_BeforeString
in_RegularExpression
変換前の文字列
正規表現の文字列、または
in_Option
Empty または False (=マッチしない行だけにする)
テスト
サンプル
ソース
T_FindStringLines
→ T_Wildcard.vbs
→ vbslib.vbs
変換後の文字列
返り値
関連
Assert FindStringLines( "abc"+ vbCRLF +"def", ".*", Empty ) = "abc"+ vbCRLF +"def"
参考
→ 正規表現
Set rep = OpenForReplace( "file1.txt", Empty )
rep.Text = FindStringLines( rep.Text, """ERROR""", Empty )
rep = Empty
→ 正規表現
←
▼
▲
Function SortStringLines( in_BeforeString as string, in_IsDuplicated as boolean )
テスト
ソース
T_FindStringLines
→ T_Wildcard.vbs
→ vbslib.vbs
複数行の文字列を、行単位で整列(ソート)します。
【引数】
in_BeforeString
in_IsDuplicated
整列前の文字列
重複する行をそのまま残すかどうか。 False = 重複したら1行にする
整列後の文字列
返り値
lines = _
"A"+ vbCRLF +_
"C"+ vbCRLF +_
"F"+ vbCRLF +_
"C"
lines = SortStringLines( lines, False )
Assert lines = _
"A"+ vbCRLF +_
"C"+ vbCRLF +_
"F"+ vbCRLF
サンプル
関連
整列前の文字列の最後の行に改行文字がないときは、先頭の行にある改行文字が追加されます。
in_IsDuplicated = False のとき、改行文字だけ異なる行も、1行にします。
←
▼
▲
Function GetLeftEndOfLinePosition( in_Text as string, in_PositionInText as integer )
現在位置にある行の先頭の位置を返します。
【引数】
in_Text
in_PositionInText
全体の文字列
現在位置、先頭 = 1
現在位置にある行の先頭の位置
返り値
lines = _
"A"+ vbCRLF +_
"C"+ vbCRLF +_
"F"+ vbCRLF +_
"K"
Assert GetPreviousLinePosition( lines, InStr( lines, "F" ) ) = InStr( lines, "F" )
Assert GetPreviousLinePosition( lines, InStr( lines, "F" ) + 1 ) = InStr( lines, "F" )
Assert GetPreviousLinePosition( lines, 1 ) = 1
サンプル
T_GetPreviousLinePosition
テスト
→ T_Replace_target.vbs
ソース
→ vbslib.vbs
関連
←
▼
▲
Function GetNextLinePosition( in_Text as string, in_PositionInText as integer )
1つ下の行の先頭の位置を返します。
【引数】
in_Text
in_OverPositionInText
全体の文字列
現在位置、先頭 = 1
1つ下の行の先頭の位置、0=下の行はない
返り値
in_OverPositionInText 引数に行の途中の位置を指定したときは、その次の行の先頭を返します。
in_OverPositionInText 引数に、最終行の中のどこかを指定したときは、0 を返します。
in_Test の末尾が改行のとき、その改行の次の文字にある行は、最終行ではありません。
Line1(CR+LF)
Line2(CR+LF)
Line1(CR+LF)
Line2
Line1(CR+LF)
(CR+LF)
… Line2 が最終行
… Line2 が最終行
… Line1の次の行が最終行
T_GetPreviousLinePosition
テスト
→ T_Replace_target.vbs
ソース
→ vbslib.vbs
←
▼
▲
Function GetPreviousLinePosition( in_Text as string, in_OverPositionInText as integer )
1つ上の行の先頭の位置を返します。
【引数】
in_Text
in_OverPositionInText
全体の文字列
現在位置、先頭 = 1
1つ上の行の先頭の位置
返り値
lines = _
"A"+ vbCRLF +_
"C"+ vbCRLF +_
"F"+ vbCRLF +_
"K"
Assert GetPreviousLinePosition( lines, InStr( lines, "F" ) ) = InStr( lines, "C" )
Assert GetPreviousLinePosition( lines, InStr( lines, "F" ) + 1 ) = InStr( lines, "F" )
Assert GetPreviousLinePosition( lines, 1 ) = 0
サンプル
T_GetPreviousLinePosition
テスト
→ T_Replace_target.vbs
ソース
→ vbslib.vbs
関連
in_OverPositionInText 引数に行の途中の位置を指定したときは、その行の先頭を返します。
in_OverPositionInText 引数に 1 (先頭) を指定したときは、0 を返します。
←
▼
▲
文字列を
と同じようにアクセスします。
.SetString( Str as string )
.ReadLine
.AtEndOfStream
1行入力します。 TextStream 互換
すべて入力したかどうか。 TextStream 互換
全体の文字列を設定し、ファイルポインタを先頭に戻す。
Set file = new StringStream
file.SetString "123" +vbCRLF+ "456"
Do Until file.AtEndOfStream()
echo file.ReadLine() ' 改行(vbCR+vbLF)は含まない
Loop
file = Empty
テスト
→ T_Replace_target.vbs
改行文字は、vbLF でも構いません。
.ReadAll
.Write
.WriteLine
全体を入力します。 TextStream 互換
文字列を出力します。 TextStream 互換
1行を出力します。 TextStream 互換
出力した文字列は、ReadAll で取得できます。
Write したものを先頭から Read するときは、ReadAll したものを SetString してください。
サンプル
文字列からリードする
Set file = new StringStream
file.WriteLine "123"
file.WriteLine "456"
Assert file.ReadAll() = "123"+ vbCRLF +"456"+ vbCRLF
file = Empty
文字列へライトする
サンプル
ソース
→ vbslib.vbs
.IsWithLineFeed
リードする1行の末尾に改行コードを含める
改行文字を維持するときは、IsWithLineFeed = True にして ReadLine → Write してください。
を使えば、改行文字を分けることができます。
関連
.Line
次にリードする行番号(1〜)
プロパティ
T_StringStream
.ReadingLineFeed
改行文字。初期値は vbLF (LF or CR+LF)。
vbCRLF のときは、LF は行に含む
←
▼
▲
テキストファイルの内容を変更します。
" " で囲む XML の属性値に変換します。
CSV 形式の1行を配列に格納する。
改行文字を削除します。
文字列 TextStream
クリップボードから文字列を取得します
行数をカウントします
正規表現で使われるメタ文字も検索できるように変換します。
←
▼
▲
←
▼
▲
Function TestableNow() as Date
テストに使える現在の日時です。
【引数】
返り値
現在の日時、または、
関連
ソース
の設定値
→ vbslib.vbs
←
▼
▲
Function new_TestableNow( a_Date as Date ) as TestableNowClass
が返す値を設定します。
【引数】
a_Date
TestableNow が返す値
削除したときに、TestableNow が返す値を現在日時に戻すオブジェクト
返り値
サンプル
Set tn = new_TestableNow( DateSerial( 2014, 1, 1 ) )
echo TestableNow()
tn = Empty
ソース
→ vbslib.vbs
←
▼
▲
Function IsTimeOnlyDate( aDateTime as Date ) as boolean
Date 型の値が、日付指定のない時刻だけの値であるかどうかを返します。
サンプル:
IsTimeOnlyDate( CDate("2009/1/1") ) = False
IsTimeOnlyDate( CDate("13:00") ) = True
(src)
←
▼
▲
Function DateAddStr( BaseDate as Date, Plus as string ) as Date
日付時刻の加減算をします。
d = DateAddStr( CDate("2009/1/1"), "+1month 10days" ) '// d = CDate("2009/2/11")
t = DateAddStr( CDate("17:00"), "-8hours" ) '// t = CDate("9:00")
t = DateAddStr( CDate("10:00"), "+1hours -5min" ) '// t = CDate("10:55")
t = DateAddStr( CDate("10:00"), "-1hours -5min" ) '// t = CDate("8:55")
t = DateAddStr( CDate("10:00"), "-1hours 5min" ) '// t = CDate("8:55")
t = DateAddStr( CDate("10:00"), "-1hours +5min" ) '// t = CDate("9:05")
t = DateAddStr( CDate("10:00"), "+2:30" ) '// t = CDate("12:30")
t = DateAddStr( CDate("10:00"), "-2:30" ) '// t = CDate("7:30")
(src)
Plus 引数
先頭は、"+" か "-" を指定します。 先頭の "+" か "-" を省略すると "+" になります。
先頭以外の "+" か "-" を省略すると、それまでの "+" か "-" を引き継ぎます。
時分は、00:00 形式で指定できます。
単位に指定できるキーワードは次のものがあります。
"year", "years", "month", "months", "day", "days"
"hour", "hours", "minute", "minutes", "min", "second", "seconds", "sec"
関連
→ 時間の加減算 (clib)
→ T_Date.vbs # main
テスト
サンプル
サンプル
echo "日時の例:2008/06/11, 14:28:01, -1day, -2hours"
echo "Enter のみ:"+ limit_str_default
limit_str = Input( "日時 >" )
If limit_str = "" Then limit_str = limit_str_default
Select Case Left( limit_str, 1 )
Case "+", "-" : limit = DateAddStr( Now(), limit_str )
Case Else : limit = CDate( limit_str )
End Select
日時でも、差分(1日前など)でもできる入力
←
▼
▲
Function GetOldestDate() as Date
Data 型の最も過去の値を返します。
(src)
←
▼
▲
Function W3CDTF( SourceTimeDate as Date or string ) as string or Date
日時を文字列(W3C-DTF)に変換します。 または、その逆変換をします。
(src)
サンプル
→ T_Date.vbs # W3CDTF
テスト
W3CDTF( CDate( "2001/2/2 1:15" ) ) = "2001-02-02T01:15:00+09:00"
W3CDTF( "2001-02-02T01:15:00+09:00" ) = CDate( "2001/02/02 1:15:00" )
W3CDTF( "2001-02-02T00:00:00Z" ) = CDate( "2001/02/12 9:00" )
日本(UTC+9時間)の場合
0000
0000-00
0000-00-00
0000-00-00T00:00+00:00
0000-00-00T00:00:00+00:00
0000-00-00T00:00:00.0+00:00
YYYY-MM-DDThh:mm:ss.sTZD
YYYY-MM-DDThh:mm:ssTZD
YYYY-MM-DDThh:mmTZD
YYYY-MM-DD
YYYY-MM
YYYY
年月日時分秒が 1桁のときは 01 のように 0 をつけること。
年は4桁。小数部は何桁でもよい。
時刻(hh:mm:ss)は、現地の時刻を記述する。
XML などで国際的に使える日時の表記法。 タイムゾーンを考慮している。
ISO 8601:1988 に基づく。 XML Schema の dateTime 型より厳密で単純。
W3Cの標準仕様ではない。
は、"Z", "+00:00", "-00:00" のいずれか。
日時を引数に指定したら、文字列が返ります。
文字列を引数に指定したら、日時が返ります。
それ以外を指定したら、Empty が返ります。
W3C-DTF の文字列は、ファイル名に使うことができません。 : を ; に置き換えてください。
←
▼
▲
a_date = CDateFromEMailDate( "Date: Fri, 25 Oct 2013 22:07:30 +0900" )
Assert W3CDTF( a_date ) = "2013-10-25T22:07:30+09:00"
Function CDateFromEMailDate( DateString as string ) as Date
e-mail (MIME) 形式の日付を、VBScript の Date 型に変換します。
【引数】
DateString
返り値
e-mail (MIME) 形式の日付
日付
関連
サンプル
ソース
→ T_Date.vbs
テスト
T_EMailDate
→ MIME
→ vbslib.vbs
←
▼
▲
Function GetMonthNumberFromString( MonthStr as string ) as integer
3文字からなる月の英語表記を、月の数字に変換します。
【引数】
MonthStr
返り値
3文字からなる月の英語表記
月の数字
Assert GetMonthNumberFromString( "Jan" ) = 1
サンプル
ソース
→ T_Date.vbs
テスト
T_GetMonthNumberFromString
→ vbslib.vbs
←
▼
▲
Function ConvertTimeZone( DateTime as Date or string, FromTZD as string, ToTZD as string )
as Date or string
タイムゾーンを変更した時刻を返します。
【引数】
DateTime
FromTZD
変更前の時刻。 Date 型、または W3C-DTF 形式の文字列
変更前のタイムゾーン、または Empty
ToTZD
変更後のタイムゾーン、または Empty
(src)
変更後の時刻。 DateTime 引数と同じ型(Date型または文字列)
返り値
サンプル
ConvertTimeZone( "2002-02-02T11:02:02+09:00", "+09:00", "Z" ) = "2002-02-02T02:02:02Z"
ConvertTimeZone( CDate("2:02"), "Z", "+9:00" ) = CDate("11:02")
→ T_Date.vbs # ConvertTimeZone
テスト
DateTime に W3C-DTF を指定するときは、FromTZD は Empty または、DateTime に指定した
タイムゾーンと同じタイムゾーンを指定できます。
DateTime に Date 型を指定するときに、FromTZD を Empty にすると、現在 OS に設定されている
タイムゾーンを指定したことと同じになります。
ToTZD に Empty にすると、現在 OS に設定されているタイムゾーンを指定したことと同じになります。
←
▼
▲
Function TimeZoneDesignator( MinuteBias as integer ) as string
W3C-DTF のタイムゾーンの部分の文字列を返します。
【引数】
MinuteBias
時差。単位は分。 Empty = OS に設定されているタイムゾーン
W3C-DTF のタイムゾーンの部分
返り値
(src)
サンプル
TimeZoneDesignator( 540 ) = "+09:00"
TimeZoneDesignator( Empty ) = "+09:00" '// 日本の場合
→ T_Date.vbs # TimeZoneDesignator
テスト
←
▼
▲
Function MinusTZD( MinuteBias as integer ) as string
W3C-DTF のタイムゾーンの部分の文字列をマイナスにして返します。
【引数】
MinuteBias
時差。単位は分。 Empty = OS に設定されているタイムゾーン
W3C-DTF のタイムゾーンの部分のマイナス
返り値
サンプル
MinusTZD( 540 ) = "-09:00"
MinusTZD( Empty ) = "-09:00" '// 日本の場合
→ T_Date.vbs # MinusTZD
テスト
(src)
Minus Time Zone Disignator
←
▼
▲
Sub BenchStart()
全体の処理時間の計測を開始します。
ファイル:
vbslib.vbs
BenchStart
For Each x In Items
Bench 1
'// セクション1の計測区間
Bench 2
'// セクション2の計測区間
Bench 0
Next
BenchEnd
Pause
サンプル
Benchmark Result:
Sampling Count = 1401
Elapsed Time = 0.151(sec)
Max is Section 2
Section 1: 3times 0.032(sec)
Section 2: 3times 0.102(sec)
計測結果の表示例
テスト
→ T_Date.vbs # T_Bench
(src)
サンプル
Sub Main()
BenchStart
Bench 1
'// セクション1の計測区間
Bench 2
'// セクション2の計測区間
Bench 0
'// 計測対象外
BenchEnd '// 表示
Pause
End Sub
計測結果の表示例
Benchmark Result:
Sampling Count = 3
Elapsed Time = 0.022(sec)
Max is Section 1
Section 1: 1times 0.012(sec)
Section 2: 1times 0.010(sec)
参考